package com.demo.java.OD251_300.OD299;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【区块链文件转储系统】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146091742
 */
public class OdMain {
    public static void main(String[] args) {
        // 变量初始化
        int res = 0;
        Scanner scanner = new Scanner(System.in);

        // 读取SATA盘容量
        int sataSize = scanner.nextInt();

        // 读取文件大小输入，先读取一行，去掉回车
        scanner.nextLine();  // 消耗掉换行符
        String line = scanner.nextLine();

        // 使用空格分割文件大小数据
        String[] fileSizes = line.split(" ");

        // 文件大小列表
        List<Integer> fileSizeList = new ArrayList<>();
        for (String fileSize : fileSizes) {
            fileSizeList.add(Integer.parseInt(fileSize));  // 转换为整数并添加到列表
        }

        // 滑动窗口算法
        int sum = 0;
        int fast = 0, slow = 0;

        // 遍历文件，调整窗口大小
        while (fast < fileSizeList.size()) {
            sum += fileSizeList.get(fast);  // 增加右边界文件到当前窗口
            while (sum > sataSize) {  // 如果总大小超过了SATA盘容量
                sum -= fileSizeList.get(slow);  // 移除左边界文件，缩小窗口
                slow++;
            }
            if (sum <= sataSize && sum > res) {  // 更新最大文件总和
                res = sum;
            }
            fast++;  // 右边界向右移动
        }

        // 输出结果
        System.out.println(res);
    }
}